﻿using SmileSolver;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Media.Imaging;

namespace Solver
{
    // zbytecne rozhrani
    interface ISolver
    {
        void Solve();
    }

    // obecne rozhrani pro ukol k  reseni
    // slovo Task = ukol, neni jako Task z TPL
    public interface ISolutionTask
    {
        // nastartuj ukol reseni
        void Start();               
        // nastav kombinaci, ktera se posuzuje
        void FirstCombination(SolutionCombination start);
        // vycisti
        void Clear();
             
        // EVENTS
        event CompleteTaskHandler OnComplete;

        //PROPERTIES
        SolutionCombination Combination { get; }

        // progress prace
        int Progress
        {
            get;
            set;
        }
        
        // stav tasku
        TaskState State
        {
            get;
            set;
        }

        // graficka indikace stavu
        BitmapSource StateImage
        {
            get;
        }

        // jmeno tasku
        string Name
        {
            get;
            set;
        }
        
        // pocet ciklu k vyzkouseni
        SolutionCombination Solution { get; set; }
        // pocet nalezenych reseni
        bool Success { get; set; }
       
    }    
}
